package gui;
import java.awt.Color;

import java.awt.Component;
import java.io.File;

import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.UIDefaults;
import javax.swing.filechooser.FileSystemView;
import javax.swing.table.TableCellRenderer;

import logic.file.IFile;

//TODO raczej powinno dziedziczyć po label
//sposobem na pozbycie sie lini grid jest chyba tylko dziedziczenie i przedefiniowania metody getIntercellSpacing by bylo 0,0
//ikony wyciagane z OSa - jak zakladki FF
public class FileNameCellRenderer implements TableCellRenderer {
	
	private static final Icon fileIcon = new ImageIcon("./images/icons/fileIcon.gif");
	private static final Icon dirIcon = new ImageIcon("./images/icons/dirIcon.gif");
	private static UIDefaults defaults = javax.swing.UIManager.getDefaults();
	
	private FileSystemView view = FileSystemView.getFileSystemView(); 
	
	FileNameCellRenderer() {
		System.out.println("FileNameCellRender");
	}

	//!!!!!!!!!!!!!!!!!!!!!!!!!parametr row odnosi się do NR WIERSZA W WIDOKU- ZASTOSOWANIE FILTRACJI/SORTERA OZNACZA KŁOPOTY
	//NALEŻY TĘ WARTOŚĆ SKONWETOWAĆ PRZY UŻYCIU METODY Z KLASY JTABLE - CONVERTROWINDEXTOMOEL	!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
	@Override
	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int col) {
		
		JLabel label = new JLabel( (String)value );
		label.setOpaque(true);
		label.setBackground(Color.WHITE);
		if (isSelected) {
			label.setBackground(defaults.getColor("Table.selectionBackground"));
		}
		
		IFile file = ( (IFile)( (FilesTableModel)table.getModel() ).getRow(table.convertRowIndexToModel(row)) );
		
		label.setIcon(view.getSystemIcon(new File(file.getPath())));
		
//		if ( ( (IFile)( (FilesTableModel)table.getModel() ).getRow(table.convertRowIndexToModel(row)) ).isDirectory() ) {
//			//System.out.println("isDir" + ( (IFile)( (FilesTableModel)table.getModel() ).getRow(row) ).getName());
//			label.setIcon(dirIcon);
//		} else {
//			label.setIcon(fileIcon);
//		}
		label.setBorder(BorderFactory.createEmptyBorder());
		return label;
	}

}
